package dp2.tablet.proyecto;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.ExecutionException;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import dp2.tablet.proyecto.bean.UsuarioBean;
import dp2.tablet.proyecto.gestores.GestorUsuarios;
import dp2.tablet.proyecto.util.JSONLogin;
import dp2.tablet.proyecto.util.JSONLoginListener;
import dp2.tablet.proyecto.util.JSONReader;
import dp2.tablet.proyecto.util.JSONReaderInt;
import dp2.tablet.proyecto.util.JSONReaderIntListener;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

public class Login extends Activity implements JSONLoginListener,JSONReaderIntListener {
	private static UsuarioBean usuario;
	GestorUsuarios dbUsuario;
	
	ProgressDialog myProgressDialog = null;
	int intContadorProgress=0;
	
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login);
        
        //Bundle bundle=getIntent().getExtras();
       // String subtotal=bundle.getString("subtotal");
        
        //getUsuarios();
        
        /*hardcodeo de usuarios
        dbUsuario = new GestorUsuarios(this);
        dbUsuario.addUsuario(new UsuarioBean("",""));
        dbUsuario.addUsuario(new UsuarioBean("admin","admin"));
		*/
		
	}
	public void onEntrarClick (View botton){
		
		if (isNetworkAvailable()==true){
			EditText txtUsuario= (EditText) findViewById(R.id.usuario);
	    	String strCodigo=txtUsuario.getText().toString();
	    	EditText txtPassword= (EditText) findViewById(R.id.paswword);
	    	String strPassword= txtPassword.getText().toString();
			
	    	JSONObject jUsuarios=null;;
			try {
				JSONLogin reader = new JSONLogin();
				reader.setJSONLoginListener((JSONLoginListener)this);
				jUsuarios=(reader.execute("http://200.16.7.112:3000/users/sign_in",strCodigo,strPassword)).get();
			} catch (Exception e1) {
				Toast.makeText(this, "Datos incorrectos", Toast.LENGTH_LONG).show();
				return;
			}
			
			if (jUsuarios!=null){
				int idWorker=0;
				try {
					JSONReaderInt reader2 = new JSONReaderInt();
					reader2.setJSONReaderIntListener((JSONReaderIntListener)this);
					idWorker=(reader2.execute("http://200.16.7.112:3000/sales/sing_in/"+jUsuarios.getJSONObject("user").getString("id")+".json")).get();
				} catch (Exception e1) {
					Toast.makeText(this, "Datos incorrectos", Toast.LENGTH_LONG).show(); 
					return;
				}				

				if (idWorker!=0){
		    		try {
			    		if (jUsuarios.getJSONObject("user").getInt("profile_id")==5){
			    			Intent intent= new Intent();
			    	    	intent.setClass(this, abrircaja.class);
			        		startActivity(intent);
			        		
			        		usuario=new UsuarioBean();
			    			usuario.setId(""+idWorker);
							usuario.setNombre(jUsuarios.getJSONObject("user").getString("nombre"));
							usuario.setApeMaterno(jUsuarios.getJSONObject("user").getString("ape_materno"));
							usuario.setApePaterno(jUsuarios.getJSONObject("user").getString("ape_paterno"));
							
							return;
						}
					} catch (JSONException e) {
						e.printStackTrace();
					}
	    		}
				else{
					Toast.makeText(this, "Datos incorrectos", Toast.LENGTH_LONG).show(); 
					return;
				}
 		
			}
			else{
				Toast.makeText(this, "Datos incorrectos", Toast.LENGTH_LONG).show();
				return;
			}
		}else{
			Toast.makeText(this, "Problema con la conexion", Toast.LENGTH_LONG).show();
		}
    	/*
    	if (validation(strCodigo,strPassword)){
			Intent intent= new Intent();
	    	intent.setClass(this, abrircaja.class);
	    	//Aca se pone la informacion que se envira a la ventana de apertura
	    	intent.putExtra("usuario", strCodigo);
	    	intent.putExtra("codigo", strPassword);
	    	
	    	startActivity(intent);
		}
		else{
			Toast.makeText(this, "Datos incorrectos", Toast.LENGTH_LONG).show();			
		}
		*/
    	
    }
	/*
	private boolean validation(String strCodigo, String strPassword){
		
		UsuarioBean objUsuario=dbUsuario.getUsuario(strCodigo);
		if (objUsuario!=null){
			return (objUsuario.getContrasenha().compareTo(strPassword)==0);		
		}
		else return false;
	}
	*/
	/*
	private void getUsuarios(){
		JSONArray jUsuarios;
		try {
			jUsuarios=(new JSONReader().execute("http://200.16.7.112:3000/client_management/workers/sync/2.json")).get();
		} catch (InterruptedException e1) {
			e1.printStackTrace();
			return;
		} catch (ExecutionException e1) {
			e1.printStackTrace();
			return;
		}

		List<UsuarioBean> lstUsuarios= new ArrayList<UsuarioBean>();
		try{
			for(int i=0;i < jUsuarios.length();i++){
			
				UsuarioBean objUsuario = new UsuarioBean();
				objUsuario.setIdUsuario(jUsuarios.getJSONObject(i).getJSONObject("user").getString("nombre"));
				lstUsuarios.add(objUsuario);
		    }			
		}catch(JSONException e){
			Log.e("log_tag", "Error parsing data "+e.toString());
	    }
	}
	*/
	public static UsuarioBean getUsuario() {
		return usuario;
	}
	
	@Override
	public void onConnected() {
		// TODO Auto-generated method stub
		intContadorProgress++;
		if (intContadorProgress==1){
			myProgressDialog = ProgressDialog.show(this, "Cargando...", "Por favor esperar...", true);
			
		}
		
	}

	@Override
	public void onSent() {
		// TODO Auto-generated method stub
		
	}


	@Override
	public void onFinished(JSONObject jArray) {
		// TODO Auto-generated method stub
		intContadorProgress--;
		if (intContadorProgress==0)
			myProgressDialog.dismiss();
	}
	@Override
	public void onFinished(Integer id) {
		// TODO Auto-generated method stub
		intContadorProgress--;
		if (intContadorProgress==0)
			myProgressDialog.dismiss();	
	}
	private boolean isNetworkAvailable() {
        ConnectivityManager connectivityManager 
              = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetworkInfo= connectivityManager.getActiveNetworkInfo();
        return activeNetworkInfo != null;
    }

}
